home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995…tember: Reference Library / Dev.CD Sep 95 RL / Dev.CD Sep 95 RL.toast / mac / Technical Documentation / develop / develop Issue 20 code / Scripting the Finder / Finder Tricks / TricksDialog.cp < prev    next >
Encoding:
Text File  |  1994-10-04  |  4.3 KB  |  147 lines  |  [TEXT/MMCC]

  1. /*================================================================================
  2.     TricksDialog.cp
  3.     
  4.     ©1994 Greg Anderson
  5.     greggor@apple.com
  6.     
  7.     Display a modeless dialog that allows the user to set the file and
  8.     creator types of files selected in the Finder
  9.         
  10. ================================================================================*/
  11. #include "TricksDialog.h"
  12. #include "DialogUtilities.h"
  13. #include "MenuHandler.h"
  14. #include "Exceptions.h"
  15. #include "SendFinderTricks.h"
  16. #include "Main.h"
  17.  
  18. DialogPtr gTricksDialogPtr = nil;
  19.  
  20. #define kTricksDialogID 128
  21.  
  22. #define kSetButton                1
  23.  
  24.  
  25. #define kMethodGroupSize        100
  26. #define kMethodItemBaseID        501
  27. #define kMethodStrings            128
  28.  
  29.  
  30. //----------------------------------------------------------------------------------------
  31. // OpenTricksDialog: 
  32. //
  33. //    Display the Set creator / set type dialog
  34. //----------------------------------------------------------------------------------------
  35. void OpenTricksDialog()
  36. {
  37.     OSErr            err = noErr;
  38.     
  39.     //
  40.     // Set up Dialog box
  41.     //
  42.     if( gTricksDialogPtr == nil )
  43.     {
  44.         TTricksDialogHandler* dialogHandler = nil;
  45.         NOREGISTER(dialogHandler);
  46.         
  47.         Try
  48.         {
  49.             gTricksDialogPtr = GetNewDialog(kTricksDialogID, (Ptr)0L, (WindowPtr)-1L);
  50.             FailResErrorOrNil( gTricksDialogPtr );
  51.             dialogHandler = new TTricksDialogHandler;
  52.             dialogHandler->ITypesDialogHandler(gTricksDialogPtr);
  53.         }
  54.         Catch(err)
  55.         {
  56.             if( dialogHandler != nil )
  57.                 delete dialogHandler;
  58.             if( gTricksDialogPtr != nil )
  59.             {
  60.                 DisposDialog( gTricksDialogPtr );
  61.                 gTricksDialogPtr = nil;
  62.             }
  63.             
  64.             Throw(err);
  65.         }
  66.     }
  67.  
  68.     if( gTricksDialogPtr != nil )
  69.         SelectWindow(gTricksDialogPtr);
  70. } // OpenTricksDialog 
  71.  
  72.  
  73. //========================================================================================
  74. // CLASS TTricksDialogHandler
  75. //========================================================================================
  76.  
  77.  
  78. //----------------------------------------------------------------------------------------
  79. // TTricksDialogHandler::ITypesDialogHandler:
  80. //
  81. //    Initialize the Set creator / set type dialog box
  82. //----------------------------------------------------------------------------------------
  83. void TTricksDialogHandler::ITypesDialogHandler(DialogPtr dialog)
  84. {
  85.     //
  86.     // Call the inherited initialization method to finish
  87.     // constructing this object.  Note that this act will
  88.     // center and display the dialog.
  89.     //
  90.     TModelessDialogHandler::IModelessDialogHandler(dialog);
  91. } // TTricksDialogHandler::ITypesDialogHandler 
  92.  
  93. //----------------------------------------------------------------------------------------
  94. // TTricksDialogHandler::CloseWindowByUser: 
  95. //
  96. // We behave like a DA, with only one open window; if the user closes our only
  97. // window, then we quit.
  98. //----------------------------------------------------------------------------------------
  99. void TTricksDialogHandler::CloseWindowByUser()
  100. {
  101.     ExitProgram(nil, 0);
  102. } // TTricksDialogHandler::CloseWindowByUser
  103.  
  104. //----------------------------------------------------------------------------------------
  105. // TTricksDialogHandler::SetupMenus: 
  106. //----------------------------------------------------------------------------------------
  107. void TTricksDialogHandler::SetupMenus()
  108. {
  109.     TModelessDialogHandler::SetupMenus();
  110. } // TTricksDialogHandler::SetupMenus
  111.  
  112. //----------------------------------------------------------------------------------------
  113. // TTricksDialogHandler::ProcessMenuSelection: 
  114. //----------------------------------------------------------------------------------------
  115. Boolean TTricksDialogHandler::ProcessMenuSelection(short commandID)
  116. {
  117.     return TWindowHandler::ProcessMenuSelection(commandID);
  118. } // TTricksDialogHandler::ProcessMenuSelection
  119.  
  120. //----------------------------------------------------------------------------------------
  121. // TTricksDialogHandler::DialogManagerEvent: 
  122. //
  123. //    When a dialog item is clicked on, this function is called to handle the event.
  124. //----------------------------------------------------------------------------------------
  125. void TTricksDialogHandler::DialogManagerEvent(EventRecord* event, short itemHit)
  126. {
  127.     //
  128.     // Pick a trick
  129.     //
  130.     if(itemHit == kSetButton)
  131.     {
  132.         RotateIconsTrick();
  133.     }
  134.     if(itemHit == 2)
  135.     {
  136.         RevealOwnerOfFrontWindow();
  137.     }
  138.     if(itemHit == 3)
  139.     {
  140.         RemoveCustomIconFromSelection();
  141.     }
  142.     if(itemHit == 4)
  143.     {
  144.         ShareSelectedFolders();
  145.     }
  146. } // TTricksDialogHandler::DialogManagerEvent 
  147.